package br.com.condominio.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.event.AjaxBehaviorEvent;

import br.com.condominio.entity.Apartamento;
import br.com.condominio.entity.Residencial;
import br.com.condominio.service.ApartamentoService;

@ViewScoped
@ManagedBean(name = "apartamentoBean")
public class ApartamentoBean extends BaseBean {

	private static final long serialVersionUID = 1L;
	@ManagedProperty("#{apartamentoService}")
	private ApartamentoService model;
	private Apartamento apartamento;
	private List<Apartamento> apartamentos;
	private Integer numeroApartamento;
	private boolean editMode;
	
	private Residencial residencialSelecionado;

	public ApartamentoService getModel() {
		return model;
	}

	public void setModel(ApartamentoService model) {
		this.model = model;
	}

	public Apartamento getApartamento() {
		if(apartamento == null){
			apartamento = new Apartamento();
		}
		return apartamento;
	}

	public void setApartamento(Apartamento apartamento) {
		this.apartamento = apartamento;
	}

	public void salvar() {
		System.out.println("idf apartamento " + apartamento.getAparCodigo());
		
		if (apartamento.getAparCodigo() == null
				|| apartamento.getAparCodigo().intValue() == 0) {
			apartamento = model.persistApartamento(apartamento);
			apartamento = new Apartamento();
			addInfoMessage("Apartamento criado com sucesso.");
		} else {
			model.updateApartamento(apartamento);
			addInfoMessage("Apartamento alterado com sucesso.");
		}
	}

	public void delete() {
		model.deleteApartamento(apartamento);
		if ((numeroApartamento != null) && !(numeroApartamento > 0)){
			apartamentos = model.getApartamentosByNumero(numeroApartamento);
		}else{
			apartamentos = model.getAllApartamentos();
		}

		// return "";
	}

	public void create() {
		this.apartamento = new Apartamento();
		this.editMode = true;
	}

	public void update() {
		this.editMode = true;
	}

	public void cancel() {
		this.editMode = false;
	}

	public void filtrarApartamento(AjaxBehaviorEvent event) {
		if ((numeroApartamento != null) && !(numeroApartamento > 0)) {
			apartamentos = model.getApartamentosByNumero(numeroApartamento);
		} else {
			apartamentos = model.getAllApartamentos();
		}
	}

	public List<Apartamento> getApartamentos() {
		if (apartamentos == null) {
			apartamentos = model.getAllApartamentos();
		}
		return apartamentos;
	}

	public void setApartamentos(List<Apartamento> apartamentos) {
		this.apartamentos = apartamentos;
	}

	public Integer getNumeroApartamento() {
		return numeroApartamento;
	}

	public void setNumeroApartamento(Integer numeroApartamento) {
		this.numeroApartamento = numeroApartamento;
	}

	public boolean isEditMode() {
		return editMode;
	}

	public void setEditMode(boolean editMode) {
		this.editMode = editMode;
	}

	public Residencial getResidencialSelecionado() {
		return residencialSelecionado;
	}

	public void setResidencialSelecionado(Residencial residencialSelecionado) {
		this.residencialSelecionado = residencialSelecionado;
	}

	

	
}
